In [1]:
import pandas as pd
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import math
import re
import random

#pd.set_option('display.max_columns', None)
pd.options.mode.chained_assignment = None  # default='warn'
plt.rcParams.update({'figure.max_open_warning': 0})
C:\Users\theoj\anaconda3\lib\site-packages\pandas\core\computation\expressions.py:20: UserWarning: Pandas requires version '2.7.3' or newer of 'numexpr' (version '2.7.1' currently installed).
  from pandas.core.computation.check import NUMEXPR_INSTALLED
In [2]:
def sportMap(x):
    if 'Athlétisme' in x:
        x='Athlétisme'
    elif 'Hockey' in x:
        x='Hockey'
    elif 'hiver' in x:
        x='Hiver'
    elif 'combat' in x:
        x='Combat'
    elif 'raquettes' in x:
        x='Raquettes'
    elif 'équestres' in x:
        x='Equestres'
    else:
        return x
    return x

def metierMap(x):
    if 'militaire' in x.lower():
        x="Militaire"
    elif 'cadre' in x.lower():
        x="Cadre"
    elif 'foyer' in x.lower():
        x="Parent au foyer"
    elif 'travail' in x.lower():
        x="Demandeur d'emploi"
    else:
        return x
    return x
def activitéMap(x):
    if 'armée' in x.lower():
        x="Défense et Sécurité"
    elif 'avocat' in x.lower():
        x="Droit"
    elif 'f&b' in x.lower():
        x="Agroalimentaire"
    elif any(c in x.lower() for c in ('business','accounting')) :
        x="Finance"
    elif 'logistique' in x.lower():
        x="Commerce / Distribution"
    elif 'humaines' in x.lower():
        x="Ressources humaines"
    elif 'physique' in x.lower():
        x="Physique / Mécanique"
    elif 'travail' in x.lower():
        x="Chomage"
    elif 'lecture' in x.lower():
        x="Edition"
    elif any(c in x.lower() for c in ('école','lycée')):
        x="Education"
    else:
        return x
    return x
def secteurMap(x):
    if 'seine' in x.lower():
        x="ÃŽle-de-France"
    elif 'liban' in x.lower():
        x="Liban"
    elif 'beyrouth' in x.lower():
        x="Liban"
    else:
        return x
    return x

def raisonsMap(dicti):
    returnDict = {}
    for x in dicti.keys():
        if 'pas utile à mon niveau de pratique du sport' in x.lower().strip():
            raison="Pas utile à mon niveau de pratique du sport"
        elif "pas nécessaire" in x.lower().strip():
            raison="Pas utile à mon niveau de pratique du sport"
        elif "je trouve difficile de choisir un appareil parmi beaucoup de choix disponibles" in x.lower().strip():
            raison="Je trouve difficile de choisir un appareil parmi beaucoup de choix disponibles"
        elif "pas de connaissance sur l'existence d'un appareil utile pour mon sport" in x.lower().strip():
            raison="Pas de connaissance sur l'existence d'un appareil utile pour mon sport"
        elif "mon club sportif ne possède pas ce type d'appareil" in x.lower().strip():
            raison="Mon club sportif ne possède pas ce type d'appareil"
        elif "connaissance d'un appareil utile mais trop cher" in x.lower().strip():
            raison="Connaissance d'un appareil utile mais trop cher"
        else:
            raison=x

        if(raison not in returnDict.keys()):
            returnDict[raison] = dicti[x]
        else:
            returnDict[raison]+= dicti[x]

    return returnDict

def raisonsOuiMap(dicti):
    returnDict = {}
    for x in dicti.keys():
        if 'pouvoir suivre mes performances' in x.lower().strip():
            raison="Pouvoir suivre mes performances"
        elif "pouvoir améliorer mes performances" in x.lower().strip():
            raison="Pouvoir améliorer mes performances"
        elif "me motiver à pratiquer plus régulièrement mon sport" in x.lower().strip():
            raison="Me motiver à pratiquer plus régulièrement mon sport"
        elif "pouvoir comparer mes performances avec celles d'autres sportifs (mes amis et des pro)" in x.lower().strip():
            raison="Pouvoir comparer mes performances avec celles d'autres sportifs (mes amis et des pro)"
        elif "sur conseils de mon médecin pour une rééducation ou suivi médical" in x.lower().strip():
            raison="Sur conseils de mon médecin pour une rééducation ou suivi médical"
        elif "pouvoir pratiquer mon sport en réduisant les blessures" in x.lower().strip():
            raison="Pouvoir pratiquer mon sport en réduisant les blessures"
        elif "innovation technologique utilisée par les plus grands sportifs" in x.lower().strip():
            raison="Être en possession d'une innovation technologique utilisée par les plus grands sportifs"
        else:
            raison=x

        if(raison not in returnDict.keys()):
            returnDict[raison] = dicti[x]
        else:
            returnDict[raison]+= dicti[x]

    return returnDict

def influenceMap(dfAll):
    indexes = dfAll.index
    dicti = {}
    for ind in indexes:
        dicti[ind] = dfAll["count"].loc[ind]
    returnDict = {}
    for x in dicti.keys():
        if any(c in x.lower() for c in ('suivi','suivre')):
            raison="Pouvoir suivre mes performances"
        elif "pouvoir améliorer mes performances" in x.lower().strip():
            raison="Pouvoir améliorer mes performances"
        else:
            raison=x

        if(raison not in returnDict.keys()):
            returnDict[raison] = dicti[x]
        else:
            returnDict[raison]+= dicti[x]

    return returnDict
In [3]:
url="https://docs.google.com/spreadsheets/d/16cXP4m1XDYwKcRIeeElBl6HpkMul82d4VYYz6XiTwOg/export?format=csv&gid=1905028942"
dfAll = pd.read_csv(url,sep=',')
dfAll.drop(columns=['Horodateur'],inplace=True)
dfAll.dropna(axis=0,inplace=True,how='all')

column_to_move = dfAll.pop("Qui serait votre principale influence à l'utilisation d'un appareil de suivi des performances ?")
dfAll.insert(6, "Qui serait votre principale influence à l'utilisation d'un appareil de suivi des performances ?", column_to_move)
column_to_move = dfAll.pop("Préfèreriez-vous avoir votre propre appareil, ou bien utiliser un appareil présent directement à l'endroit où vous pratiquer votre sport ?")
dfAll.insert(7, "Préfèreriez-vous avoir votre propre appareil, ou bien utiliser un appareil présent directement à l'endroit où vous pratiquer votre sport ?", column_to_move)
column_to_move = dfAll.pop("Est-ce que l'achat d'un appareil reconditionné / d'occasion, et donc moins cher, vous intéresserait ?")
dfAll.insert(8, "Est-ce que l'achat d'un appareil reconditionné / d'occasion, et donc moins cher, vous intéresserait ?", column_to_move)

dfAll["Quel est votre sport principal dans la liste ci-dessous ?"] = dfAll["Quel est votre sport principal dans la liste ci-dessous ?"].map(sportMap)
dfAll["Quelle est votre catégorie socio-professionnelle ?"]=dfAll["Quelle est votre catégorie socio-professionnelle ?"].map(metierMap)
dfAll["Quel est votre secteur d'activité ?"]=dfAll["Quel est votre secteur d'activité ?"].map(activitéMap)
dfAll["Quelle est votre principale région de résidence ?"]=dfAll["Quelle est votre principale région de résidence ?"].map(secteurMap)
dfAll['count']=0
dfAll
Out[3]:
À quelle fréquence pratiquez-vous une activité sportive ? Pratiquez-vous un sport en club sportif ? (salle de sport, club de football, cours de boxe, etc) Pratiquez-vous un sport en compétition ? (tournois sportifs, marathon, championnats, etc) Lors de la pratique de votre sport, utilisez-vous un appareil de suivi de vos performances ? (montre connectée, capteur sur soi, application mobile, etc) Si oui quel(s) appareil(s) utilisez-vous ? Si non pour quelles raisons ? Qui serait votre principale influence à l'utilisation d'un appareil de suivi des performances ? Préfèreriez-vous avoir votre propre appareil, ou bien utiliser un appareil présent directement à l'endroit où vous pratiquer votre sport ? Est-ce que l'achat d'un appareil reconditionné / d'occasion, et donc moins cher, vous intéresserait ? Quel est votre sport principal dans la liste ci-dessous ? ... Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.6 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.7 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.8 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.9 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.10 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.11 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.12 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.13 Seriez-vous plus intéressé par l'achat d'un appareil, ou par sa location ?.14 count
0 Régulièrement chaque semaine Oui Oui Non NaN Pas de connaissance sur l'existence d'un appar... Mon entraineur m'en a conseillé un Mon propre appareil Peut-être, cela dépend de l'état du produit Hockey ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0
1 Régulièrement chaque semaine Oui Non Non NaN Pas de connaissance sur l'existence d'un appar... Mon entraineur m'en a conseillé un Mon propre appareil Peut-être, cela dépend de l'état du produit Raquettes ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0
2 Régulièrement chaque mois Oui Oui Non NaN Pas utile à mon niveau de pratique du sport Des amis l'utilisent Mon propre appareil Peut-être, cela dépend de l'état du produit Football ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0
3 Régulièrement chaque semaine Non Non Non NaN Pas utile à mon niveau de pratique du sport Des amis l'utilisent Mon propre appareil Oui, s'il fonctionne c'est le principal Football ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0
4 Régulièrement chaque semaine Oui Non Non NaN Pas utile à mon niveau de pratique du sport Des amis l'utilisent Mon propre appareil Non, je préfère un produit neuf Musculation ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
124 Régulièrement chaque mois Non Non Non NaN Connaissance d'un appareil utile mais trop cher Des amis l'utilisent Mon propre appareil Oui, s'il fonctionne c'est le principal Equestres ... NaN NaN NaN NaN NaN NaN NaN Achat NaN 0
125 Régulièrement chaque semaine Oui Oui Non NaN NaN Des fédérations sportives professionnelles / c... Un appareil présent sur place Oui, s'il fonctionne c'est le principal Equestres ... NaN NaN NaN NaN NaN NaN NaN Location NaN 0
126 Régulièrement chaque semaine Non Non Non NaN Pas utile à mon niveau de pratique du sport Des amis l'utilisent Mon propre appareil Peut-être, cela dépend de l'état du produit Musculation ... NaN Achat NaN NaN NaN NaN NaN NaN NaN 0
127 Régulièrement chaque semaine Oui Non Oui Polar watch NaN Une nouvelle experience Mon propre appareil Non, je préfère un produit neuf Natation ... NaN NaN Achat NaN NaN NaN NaN NaN NaN 0
128 Plutôt rarement Oui Non Oui Fitbit NaN Des amis l'utilisent Mon propre appareil Non, je préfère un produit neuf Natation ... NaN NaN Achat NaN NaN NaN NaN NaN NaN 0

129 rows × 207 columns

In [4]:
print(f"Il y eu {len(dfAll)} réponses au questionnaire")
Il y eu 129 réponses au questionnaire

Analyses selon les profils¶

In [5]:
def countMultiple(dfCol):
    tempDict = {}
    for i in range (len(dfCol)):
        try:
            allCol = dfCol[i].split(',')
            for val in allCol:
                if(val.strip() in tempDict.keys()):
                    tempDict[val.strip()] += 1
                else:
                    tempDict[val.strip()] = 1
        except:
            pass
    return tempDict

def getParVal(dictTec):
    tempDict = {}
    for i in dictTec.keys():
        try:
            resultat = re.findall(r"(?<=de type\s).*", i)[0][:-1]
            if(resultat in tempDict.keys()):
                tempDict[resultat] += dictTec[i]
            else:
                tempDict[resultat] = dictTec[i]
        except:
            resultat = ""
            
    return tempDict

def getColInd(dfCol,mot):
    ind = " "
    for i in dfCol.columns:
        if(mot in i):
            ind=i
            break
    return ind
In [6]:
figWeight,figHeight = 10,7 
tempDf=dfAll.groupby(getColInd(dfAll,'genre')).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Genre des participants",ylabel='Genre',autopct='%1.1f%%',colors= ['royalblue','hotpink','orange'])
Out[6]:
<AxesSubplot:title={'center':'Genre des participants'}, ylabel='Genre'>
No description has been provided for this image
In [7]:
tempDf=dfAll.groupby(getColInd(dfAll,"tranche d'âge")).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Age des participants",ylabel='Age',autopct='%1.1f%%')
Out[7]:
<AxesSubplot:title={'center':'Age des participants'}, ylabel='Age'>
No description has been provided for this image
In [8]:
tempDf=dfAll.groupby(getColInd(dfAll,'socio-professionnelle')).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Metier des participants",ylabel='Metier',autopct='%1.1f%%')
Out[8]:
<AxesSubplot:title={'center':'Metier des participants'}, ylabel='Metier'>
No description has been provided for this image
In [9]:
tempDf=dfAll.groupby(getColInd(dfAll,'secteur')).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Secteur des participants",ylabel='Secteur',autopct='%1.1f%%')
Out[9]:
<AxesSubplot:title={'center':'Secteur des participants'}, ylabel='Secteur'>
No description has been provided for this image
In [10]:
tempDf=dfAll.groupby(getColInd(dfAll,'principale région')).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Lieu des participants",ylabel='Lieu',autopct='%1.1f%%')
Out[10]:
<AxesSubplot:title={'center':'Lieu des participants'}, ylabel='Lieu'>
No description has been provided for this image
In [11]:
tempDf=dfAll.groupby(dfAll.columns[0]).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Fréquence des sessions de sport",ylabel='Fréquence',autopct='%1.1f%%')
Out[11]:
<AxesSubplot:title={'center':'Fréquence des sessions de sport'}, ylabel='Fréquence'>
No description has been provided for this image
In [12]:
tempDf=dfAll.groupby(dfAll.columns[1]).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Pratiquez-vous un sport en club",ylabel='Club',autopct='%1.1f%%')
Out[12]:
<AxesSubplot:title={'center':'Pratiquez-vous un sport en club'}, ylabel='Club'>
No description has been provided for this image
In [13]:
tempDf=dfAll.groupby(dfAll.columns[2]).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Pratiquez-vous un sport en competition",ylabel='Competition',autopct='%1.1f%%')
Out[13]:
<AxesSubplot:title={'center':'Pratiquez-vous un sport en competition'}, ylabel='Competition'>
No description has been provided for this image
In [14]:
tempDf=dfAll.groupby(dfAll.columns[3]).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(kind='pie',figsize=(figWeight,figHeight),title="Sport avec appareil",ylabel='Appareil',autopct='%1.1f%%')
Out[14]:
<AxesSubplot:title={'center':'Sport avec appareil'}, ylabel='Appareil'>
No description has been provided for this image
In [15]:
tempDf=dfAll[dfAll.columns[4]].dropna()
tempDf.sort_values().to_frame()
Out[15]:
Si oui quel(s) appareil(s) utilisez-vous ?
72 Apple Watch
54 Apple watch
51 Apple watch
25 Apple watch
110 Application
31 Application mobile
122 Application mobile
35 Application sur téléphone
78 Application téléphone
128 Fitbit
89 Garmin
17 Garmin
88 Garmin Venu 2
58 Montre
94 Montre
76 Montre
37 Montre Garmin
71 Montre Garmin foreverunner 735 xt
81 Montre Suunto 9
101 Montre connectée
103 Montre connectée
109 Montre connectée
70 Montre connectée
8 Montre connectée
9 Montre connectée
104 Montre connectée
32 Montre connectée
20 Montre coros 2
27 Montre garmin
80 Montre sunto
127 Polar watch
68 Portable / Runkeeper
55 Samsung watch
38 Strava
64 Strava
82 Suunto 9, Freeletics, Suunto Zoop Novo
99 Telephone Apple
87 Téléphone
34 Téléphone
46 Velo d'appartement
49 X
60 application tel
59 aucun car cest mauvais on pe se faire mal par ...
106 fit
117 montre connectee
56 montre connecter
69 « Santé » sur iPhone pour la distance parcourue
In [16]:
minValues = 2
tempDf = countMultiple(dfAll[dfAll.columns[5]])
tempDf = raisonsMap(tempDf)
tempDf = pd.DataFrame(data=tempDf.values(),columns=["count"],index=tempDf.keys())
tempDfMin = tempDf[tempDf["count"]<=minValues]
tempDf = tempDf[tempDf["count"]>minValues]
tempDf.sort_values(by='count',ascending=True).head().plot(kind='barh',figsize=(10,7),title="Obstacles",ylabel="Obstacles")
Out[16]:
<AxesSubplot:title={'center':'Obstacles'}, ylabel='Obstacles'>
No description has been provided for this image
In [17]:
tempDfMin.sort_values(by='count',ascending=False)
Out[17]:
count
Je n'aime pas courir avec un téléphone dans la poche 1
Flemme 1
c est dangereux 1
Pour des renseignements 1
Je n'en vois pas l'intérêt 1
Étant une ancienne sportive en sport Études- je connais mes limites et l’entraînement adapté pour un résultat bénéfique. 1
No need 1
In [18]:
minValues = 2
tempDf=dfAll.groupby(getColInd(dfAll,'influence')).count().sort_values(by='count',ascending=False)
tempDf = influenceMap(tempDf)
tempDf = pd.DataFrame(data=tempDf.values(),columns=["count"],index=tempDf.keys())
tempDfMin = tempDf[tempDf["count"]<=minValues]
tempDf = tempDf[tempDf["count"]>minValues]
tempDf["count"].sort_values(ascending=False).plot(kind='pie',figsize=(figWeight,figHeight),title="Influence pour utilisation",ylabel='Influenceur',autopct='%1.1f%%')
#tempDf.iloc[:,1].plot(kind='barh',figsize=(figWeight,figHeight),title="Influence pour utilisation",ylabel='Influenceur')
Out[18]:
<AxesSubplot:title={'center':'Influence pour utilisation'}, ylabel='Influenceur'>
No description has been provided for this image
In [19]:
tempDfMin['count'].to_frame()
Out[19]:
count
Aucun 1
Si je veux prendre le sport serieusement et comme priorité 1
curiosité personnelle, stats 1
Une nouvelle experience 1
Not accurate 1
Permet une analyse des entraînements et compétitions 1
Moi même 1
Juste la disponibilité de l’app sur mon iphone 1
suggestion téléphone 1
In [20]:
minValues = 2
raisonsBool = ['Oui','Non']
raisonsBool2 = ['Oui','Non']

for r1 in raisonsBool:
    for r2 in raisonsBool2:
        tempDf = dfAll[(dfAll['Pratiquez-vous un sport en compétition ? (tournois sportifs, marathon, championnats, etc)']==r1)&(dfAll['Pratiquez-vous un sport en club sportif ? (salle de sport, club de football, cours de boxe, etc)']==r2)]
        tempDf=tempDf.groupby(getColInd(dfAll,'influence')).count().sort_values(by='count',ascending=False)
        tempDf = influenceMap(tempDf)
        tempDf = pd.DataFrame(data=tempDf.values(),columns=["count"],index=tempDf.keys())
        tempDfMin = tempDf[tempDf["count"]<=minValues]
        tempDf = tempDf[tempDf["count"]>minValues]
        tempDf["count"].sort_values(ascending=False).plot(kind='pie',figsize=(figWeight,figHeight),title=f"Influence pour utilisation {r1}/{r2}",ylabel='Influenceur',autopct='%1.1f%%')
        plt.show()
#tempDf.iloc[:,1].plot(kind='barh',figsize=(figWeight,figHeight),title="Influence pour utilisation",ylabel='Influenceur')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [25]:
tempDf=dfAll.groupby(getColInd(dfAll,'votre propre appareil')).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(fontsize=15,kind='pie',figsize=(figWeight,figHeight),title="Possession de l'appareil",ylabel='Possession',autopct='%1.1f%%')
Out[25]:
<AxesSubplot:title={'center':"Possession de l'appareil"}, ylabel='Possession'>
No description has been provided for this image
In [26]:
tempDf=dfAll.groupby(getColInd(dfAll,'donc moins cher')).count().sort_values(by='count',ascending=False)
tempDf.iloc[:,1].plot(fontsize=15,kind='pie',figsize=(figWeight,figHeight),title="Appareil reconditionné",ylabel='Possession',autopct='%1.1f%%')
Out[26]:
<AxesSubplot:title={'center':'Appareil reconditionné'}, ylabel='Possession'>
No description has been provided for this image
In [27]:
tempDf=dfAll.groupby(dfAll.columns[9]).count().sort_values(by='count',ascending=True)
tempDf.iloc[:,1].plot(kind='barh',figsize=(15,8),title="Sport Principal",ylabel='Sport')
Out[27]:
<AxesSubplot:title={'center':'Sport Principal'}, ylabel='Sport'>
No description has been provided for this image

Uniformisation puis séparation selon les sports¶

In [28]:
def renameCol(df):
    cols = {}
    for i in df.columns:
        if('approfondi' in i):
            cols[i]='Complexe_Simple'
        elif ("N'hesitez-pas à rajouter" in i):
            cols[i]='Appareils_Utiles'
        elif ("seraient les raisons" in i):
            cols[i]='Raisons'
        elif ("Prix trop élevé" in i):
            cols[i]='Obstacle_Prix'
        elif ("Peur de l'inconfort" in i):
            cols[i]='Obstacle_Inconfort'
        elif ("Peur qu'il soit inutile" in i):
            cols[i]='Obstacle_Inutile'
        elif ("Peur qu'il soit mal utilisé" in i):
            cols[i]='Obstacle_Mauv_Utilisation'
        elif ("mauvaise qualité" in i):
            cols[i]='Obstacle_Qualite'
        elif ("esthétique désagréable" in i):
            cols[i]='Obstacle_Visuel'
        elif ("abonnement pour utiliser" in i):
            cols[i]='Montant_Abonnement'
        elif ("dépenser pour vous procurer" in i):
            cols[i]='Montant_Achat'
        elif ("achat d'un appareil, ou par sa location" in i):
            cols[i]='Achat_Loc'
    df.rename(columns=cols,inplace=True) 
    return df

def nanAchat_Loc(x):
    choice = ['Achat','Location']
    try:
        x = float(x)
        x = random.choice(choice)
        return x
    except:
        if x==0:
            x = random.choice(choice)
            return x
        else:
            return x
In [29]:
sports = {}
for i in range (len(dfAll)):
    tempSport = dfAll['Quel est votre sport principal dans la liste ci-dessous ?'].iloc[i]
    if(tempSport not in sports):
        sports[tempSport] = 1
    else:
        sports[tempSport]+=1
        
dictDF ={}
for sport in sports.keys():
    dictDF[sport] = dfAll[dfAll['Quel est votre sport principal dans la liste ci-dessous ?']==sport]
    dictDF[sport].dropna(axis=1,inplace=True,how='all')
    renameCol(dictDF[sport])
    if 'Achat_Loc' not in dictDF[sport].columns:
        dictDF[sport]['Achat_Loc'] = 0
        dictDF[sport]['Achat_Loc'] = dictDF[sport]['Achat_Loc'].map(nanAchat_Loc)
    dictDF[sport].sort_index(axis=1, ascending=False,inplace=True)
    print(f"Il y a eu {len(dictDF[sport])} réponses pour le sport {sport}")
    
Il y a eu 1 réponses pour le sport Hockey
Il y a eu 9 réponses pour le sport Raquettes
Il y a eu 13 réponses pour le sport Football
Il y a eu 26 réponses pour le sport Musculation
Il y a eu 29 réponses pour le sport Athlétisme
Il y a eu 5 réponses pour le sport Hiver
Il y a eu 13 réponses pour le sport Natation
Il y a eu 6 réponses pour le sport Rugby
Il y a eu 2 réponses pour le sport Handball
Il y a eu 5 réponses pour le sport Combat
Il y a eu 7 réponses pour le sport Cyclisme
Il y a eu 3 réponses pour le sport Volleyball
Il y a eu 3 réponses pour le sport Basketball
Il y a eu 4 réponses pour le sport Golf
Il y a eu 3 réponses pour le sport Equestres
In [30]:
tempDict = {}
for i in dictDF['Hiver']['Appareils_Utiles']:
    allCol = i.split(',')
    for val in allCol:
        if(val.strip() in tempDict.keys()):
            tempDict[val.strip()] += 1
        else:
            tempDict[val.strip()] = 1
tempDict
Out[30]:
{'Ski connectés pour des statistiques (de type Rossignol & PIQ)': 3,
 'Analyse vidéo des gestes (de type Dartfish)': 3,
 "Ski connectés pour suivre l'état du matériel et donc éviter les blessures (de type Black Line Ski)": 2,
 'Simulateurs de descente à ski (de type Pro Ski Simulator)': 2}
In [31]:
def countMultipleAppareils(dfCol):
    tempDict = {}
    for i in dfCol: 
        try:
            allCol = i.split(',')
            for val in allCol:
                if(val.strip() in tempDict.keys()):
                    tempDict[val.strip()] += 1
                else:
                    tempDict[val.strip()] = 1
        except:
            pass
    return tempDict

for sport in dictDF.keys():
    tempApp = countMultipleAppareils(dictDF[sport]['Appareils_Utiles'])
    tempDf = pd.DataFrame(data=tempApp.values(),columns=["count"],index=tempApp.keys())
    c =tempDf.sort_values(by='count',ascending=False).head(3)
    #print(c)
    c["count"].plot(kind='barh',title=sport)
    plt.show()
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [32]:
def countMultipleSport(dfCol):
    tempDict = {}
    for i in dfCol:
        try:
            allCol = i.split(',')        
            for val in allCol:
                if(val.strip() in tempDict.keys()):
                    tempDict[val.strip()] += 1
                else:
                    tempDict[val.strip()] = 1          
        except:
            print(i)
            pass
    return tempDict


for k in dictDF.keys():
    dfTest = dictDF[k]
    tempDf = countMultipleSport(dfTest[dfTest.columns[4]])
    tempDf = raisonsMap(tempDf)
    tempDf = pd.DataFrame(data=tempDf.values(),columns=["count"],index=tempDf.keys())
    c =tempDf.sort_values(by='count',ascending=False).head(1)
    print(k,":",c.index[0],"->",c["count"].iloc[0])
Hockey : Mon entraineur m'en a conseillé un -> 1
Raquettes : Pouvoir améliorer mes performances -> 9
Football : Pouvoir suivre mes performances -> 10
Musculation : Pouvoir améliorer mes performances -> 18
Athlétisme : Pouvoir suivre mes performances -> 26
Hiver : Des amis l'utilisent -> 2
Natation : Pouvoir suivre mes performances -> 6
Rugby : Pouvoir améliorer mes performances -> 3
Handball : Mon entraineur m'en a conseillé un -> 1
Combat : Pouvoir suivre mes performances -> 4
Cyclisme : Me motiver à pratiquer plus régulièrement mon sport -> 4
Volleyball : Sur conseils de mon médecin pour une rééducation ou suivi médical -> 1
Basketball : Des amis l'utilisent -> 1
Golf : Pouvoir améliorer mes performances -> 3
Equestres : Mon médecin m'en a conseillé un -> 1
In [33]:
for k in dictDF.keys():
    print('Montant_Abonnement et Achat')
    tempDf = dictDF[k].groupby('Montant_Abonnement').count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    #print('Montant_Achat')
    tempDf = dictDF[k].groupby('Montant_Achat').count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    tempDf = dictDF[k].groupby('Complexe_Simple').count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    try:
        tempDf = dictDF[k].groupby('Achat_Loc').count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
        print(k,":",tempDf[0])
    except:
        print("pas de loc")
    tempDf = dictDF[k].groupby("Quelle est votre tranche d'âge ?").count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    tempDf = dictDF[k].groupby("Quelle est votre principale région de résidence ?").count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    tempDf = dictDF[k].groupby("Quel est votre secteur d'activité ?").count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    tempDf = dictDF[k].groupby("Quelle est votre catégorie socio-professionnelle ?").count().sort_values(by='count',ascending=False).iloc[:,1:2].head(1).index
    print(k,":",tempDf[0])
    
    
    
Montant_Abonnement et Achat
Hockey : 0-4,99 euros
Hockey : 0-24 euros
Hockey : Complet mais complexe
Hockey : Achat
Hockey : 15-17 ans
Hockey : ÃŽle-de-France
Hockey : Education
Hockey : Etudiant
Montant_Abonnement et Achat
Raquettes : 0-4,99 euros
Raquettes : 50-99 euros
Raquettes : Simplifié mais compréhensible
Raquettes : Achat
Raquettes : 18-24 ans
Raquettes : ÃŽle-de-France
Raquettes : Agroalimentaire
Raquettes : Etudiant
Montant_Abonnement et Achat
Football : 0-4,99 euros
Football : 50-99 euros
Football : Simplifié mais compréhensible
Football : Achat
Football : 18-24 ans
Football : ÃŽle-de-France
Football : Finance
Football : Etudiant
Montant_Abonnement et Achat
Musculation : 0-4,99 euros
Musculation : 100-299 euros
Musculation : Simplifié mais compréhensible
Musculation : Achat
Musculation : 18-24 ans
Musculation : ÃŽle-de-France
Musculation : Informatique  / Télécom
Musculation : Etudiant
Montant_Abonnement et Achat
Athlétisme : 5-9,99 euros
Athlétisme : 100-299 euros
Athlétisme : Simplifié mais compréhensible
Athlétisme : Achat
Athlétisme : 18-24 ans
Athlétisme : Île-de-France
Athlétisme : Santé / Social
Athlétisme : Employé
Montant_Abonnement et Achat
Hiver : 0-4,99 euros
Hiver : 100-299 euros
Hiver : Complet mais complexe
Hiver : Achat
Hiver : 18-24 ans
Hiver : ÃŽle-de-France
Hiver : Education
Hiver : Enseignant
Montant_Abonnement et Achat
Natation : 0-4,99 euros
Natation : 50-99 euros
Natation : Simplifié mais compréhensible
Natation : Achat
Natation : 45-55 ans
Natation : ÃŽle-de-France
Natation : Communication / Marketing
Natation : Employé
Montant_Abonnement et Achat
Rugby : 0-4,99 euros
Rugby : 25-49 euros
Rugby : Simplifié mais compréhensible
Rugby : Achat
Rugby : 18-24 ans
Rugby : ÃŽle-de-France
Rugby : Energie
Rugby : Etudiant
Montant_Abonnement et Achat
Handball : 5-9,99 euros
Handball : 25-49 euros
Handball : Complet mais complexe
Handball : Achat
Handball : 18-24 ans
Handball : ÃŽle-de-France
Handball : Défense et Sécurité
Handball : Etudiant
Montant_Abonnement et Achat
Combat : 5-9,99 euros
Combat : 25-49 euros
Combat : Simplifié mais compréhensible
Combat : Achat
Combat : 25-34 ans
Combat : ÃŽle-de-France
Combat : Communication / Marketing
Combat : Etudiant
Montant_Abonnement et Achat
Cyclisme : 5-9,99 euros
Cyclisme : 100-299 euros
Cyclisme : Simplifié mais compréhensible
Cyclisme : Achat
Cyclisme : 35-44 ans
Cyclisme : Bourgogne Franche-Comté
Cyclisme : Santé / Social
Cyclisme : Cadre
Montant_Abonnement et Achat
Volleyball : 20 euros et plus
Volleyball : 50-99 euros
Volleyball : Complet mais complexe
Volleyball : Achat
Volleyball : 18-24 ans
Volleyball : Liban
Volleyball : Art
Volleyball : Cadre
Montant_Abonnement et Achat
Basketball : 10-14,99euros
Basketball : 50-99 euros
Basketball : Complet mais complexe
Basketball : Achat
Basketball : 25-34 ans
Basketball : Liban
Basketball : Commerce / Distribution
Basketball : Cadre
Montant_Abonnement et Achat
Golf : 10-14,99euros
Golf : 100-299 euros
Golf : Complet mais complexe
Golf : Achat
Golf : 18-24 ans
Golf : Bourgogne Franche-Comté
Golf : Energie
Golf : Cadre
Montant_Abonnement et Achat
Equestres : 5-9,99 euros
Equestres : 0-24 euros
Equestres : Complet mais complexe
Equestres : Achat
Equestres : 15-17 ans
Equestres : ÃŽle-de-France
Equestres : Physique / Mécanique
Equestres : Etudiant
In [34]:
tempAllDf = []
for i in dictDF.keys():
    tempAllDf.append(dictDF[i])
result = pd.concat(tempAllDf)
result.head()
Out[34]:
À quelle fréquence pratiquez-vous une activité sportive ? count Si non pour quelles raisons ? Raisons Qui serait votre principale influence à l'utilisation d'un appareil de suivi des performances ? Quelle est votre tranche d'âge ? Quelle est votre principale région de résidence ? Quelle est votre catégorie socio-professionnelle ? Quel est votre sport principal dans la liste ci-dessous ? Quel est votre secteur d'activité ? ... Obstacle_Inutile Obstacle_Inconfort Montant_Achat Montant_Abonnement Lors de la pratique de votre sport, utilisez-vous un appareil de suivi de vos performances ? (montre connectée, capteur sur soi, application mobile, etc) Est-ce que l'achat d'un appareil reconditionné / d'occasion, et donc moins cher, vous intéresserait ? Complexe_Simple Appareils_Utiles Achat_Loc Si oui quel(s) appareil(s) utilisez-vous ?
0 Régulièrement chaque semaine 0 Pas de connaissance sur l'existence d'un appar... Pouvoir améliorer mes performances, Pouvoir co... Mon entraineur m'en a conseillé un 15-17 ans Île-de-France Etudiant Hockey Education ... 2.0 2.0 0-24 euros 0-4,99 euros Non Peut-être, cela dépend de l'état du produit Complet mais complexe Analyse vidéo des gestes (de type Dartfish), B... Achat NaN
1 Régulièrement chaque semaine 0 Pas de connaissance sur l'existence d'un appar... Pouvoir suivre mes performances, Pouvoir améli... Mon entraineur m'en a conseillé un 18-24 ans Île-de-France Etudiant Raquettes Informatique / Télécom ... 2.0 4.0 25-49 euros 0-4,99 euros Non Peut-être, cela dépend de l'état du produit Complet mais complexe Analyse vidéo des gestes (de type Dartfish), B... NaN NaN
6 Régulièrement chaque mois 0 Pas utile à mon niveau de pratique du sport Pouvoir améliorer mes performances Des sportifs professionnels que j'apprécie l'u... 18-24 ans Île-de-France Etudiant Raquettes Industrie ... 1.0 1.0 50-99 euros 0-4,99 euros Non Oui, s'il fonctionne c'est le principal Complet mais complexe Analyse vidéo des gestes (de type Dartfish), B... Achat NaN
27 Régulièrement chaque semaine 0 NaN Pouvoir suivre mes performances, Pouvoir améli... Des amis l'utilisent 18-24 ans Normandie Etudiant Raquettes Agroalimentaire ... 3.0 2.0 50-99 euros 0-4,99 euros Oui Oui, s'il fonctionne c'est le principal Simplifié mais compréhensible Analyse vidéo des gestes (de type Dartfish), A... Achat Montre garmin
29 Occasionnellement 0 Connaissance d'un appareil utile mais trop cher Pouvoir suivre mes performances, Pouvoir améli... Mon médecin m'en a conseillé un 18-24 ans Île-de-France Etudiant Raquettes Communication / Marketing ... 3.0 2.0 50-99 euros 0-4,99 euros Non Oui, s'il fonctionne c'est le principal Simplifié mais compréhensible Capteur sur la raquette pour analyser le coup ... Achat NaN

5 rows × 28 columns

In [35]:
tempDf = countMultiple(result['Raisons'])
tempDf = raisonsOuiMap(tempDf)
tempDf = pd.DataFrame(data=tempDf.values(),columns=["count"],index=tempDf.keys())
tempDf.sort_values(by='count',ascending=True).plot(kind='barh',figsize=(10,7),title="Motivations",ylabel="Motivations")
Out[35]:
<AxesSubplot:title={'center':'Motivations'}, ylabel='Motivations'>
No description has been provided for this image
In [36]:
dfObs = result[['Obstacle_Qualite','Obstacle_Prix','Obstacle_Mauv_Utilisation','Obstacle_Inutile','Obstacle_Inconfort','Obstacle_Visuel']]
dfObs.mean().sort_values(ascending=True).plot(xlim=[0,5],kind='barh',figsize=(15,8),title="Du plus important au moins important",color='tomato')
Out[36]:
<AxesSubplot:title={'center':'Du plus important au moins important'}>
No description has been provided for this image
In [37]:
tempDf = getParVal(countMultiple(result['Appareils_Utiles']))
tempDf = pd.DataFrame(data=tempDf.values(),columns=["count"],index=tempDf.keys())
tempDf.sort_values(by='count',ascending=False).head().plot(kind='barh',figsize=(13,7),title="Appareils Utiles",ylabel="Obstacles")
Out[37]:
<AxesSubplot:title={'center':'Appareils Utiles'}, ylabel='Obstacles'>
No description has been provided for this image
In [38]:
tempDf.sort_values(by='count',ascending=False)
Out[38]:
count
Dartfish 37
Garmin 26
MOOV Now 21
Strava 17
PhyNord 17
TechnoSport d’Aix-Marseille 9
STATSport ou Catapult 8
Phyling 7
PhyLift 7
Zepp 7
HOVR Phantom 6
Opta 5
PhyPlate 4
Playsight 4
Speed cell Adidas 4
Tennis Analytic 4
M-Tracer Epson 3
TopGolf 3
FlyFit 3
Hykso 3
VERT 3
Rossignol & PIQ 3
Pop de Babolat & Piq 3
Playermaker CITYPLAY 3
Black Line Ski 2
Pro Ski Simulator 2
GraffGolf 2
Wilson Smart Basketball 2
BIOMECAFORCE 2
CWD iJUMP 2
Huupe 2
Corner 2
StepUp Horse ou Equisense 2
Prevent Biometrics 2
Aquanex analysis 1
HELIOS 1
Zwift 1
P2C - Prévention des Commotions Cérébrales 1
CEEFIT 1
I-Percut 1
Guardlab 1
KiSwim 1
DataDunk 1
Kinexon 1
Handball.ai ou Kinexon 1
Catapult 1
Magellan Echo Fit 1
Motionysis 1
LifeBeam Helmet 1
DeepStrike 1
Shot Tracker 1
In [39]:
dfObs=result.groupby('Montant_Achat').count()#.sort_values(by='Genre',ascending=False)
dfObs['count'].plot(kind="pie",figsize=(figWeight,figHeight),title="Montant Achat",ylabel='Montant',autopct='%1.1f%%')
Out[39]:
<AxesSubplot:title={'center':'Montant Achat'}, ylabel='Montant'>
No description has been provided for this image
In [40]:
dfObs=result.groupby('Montant_Abonnement').count()#.sort_values(by='count',ascending=True)
dfObs['count'].plot(kind="pie",figsize=(figWeight,figHeight),title="Montant Abonnement",ylabel='Montant',autopct='%1.1f%%')
Out[40]:
<AxesSubplot:title={'center':'Montant Abonnement'}, ylabel='Montant'>
No description has been provided for this image
In [41]:
dfObs=result.groupby('Complexe_Simple').count()#.sort_values(by='count',ascending=False)
dfObs['count'].plot(kind="pie",figsize=(figWeight,figHeight),title="Complexité appareil",ylabel='Complexité',autopct='%1.1f%%')
Out[41]:
<AxesSubplot:title={'center':'Complexité appareil'}, ylabel='Complexité'>
No description has been provided for this image
In [42]:
dfObs=result.groupby('Achat_Loc').count()#.sort_values(by='Genre',ascending=False)
dfObs['count'].plot(kind="pie",figsize=(figWeight,figHeight),title="Achat ou Location",ylabel='Achat/Location',autopct='%1.1f%%')
Out[42]:
<AxesSubplot:title={'center':'Achat ou Location'}, ylabel='Achat/Location'>
No description has been provided for this image

Analyse par Age¶

In [43]:
#Colonnes à analyser
statNames = ["Montant_Abonnement","Montant_Achat",
             "Qui serait votre principale influence à l'utilisation d'un appareil de suivi des performances ?",
             "Préfèreriez-vous avoir votre propre appareil, ou bien utiliser un appareil présent directement à l'endroit où vous pratiquer votre sport ?",
             "Est-ce que l'achat d'un appareil reconditionné / d'occasion, et donc moins cher, vous intéresserait ?",
             "Complexe_Simple","Achat_Loc",
             "Quel est votre sport principal dans la liste ci-dessous ?"]
In [44]:
ages = {}
for i in range (len(result)):
    tempAge = result["Quelle est votre tranche d'âge ?"].iloc[i]
    if(tempAge not in ages):
        ages[tempAge] = 1
    else:
        ages[tempAge]+=1

ageDict ={}
for curAges in ages.keys():
    ageDict[curAges] = result[result["Quelle est votre tranche d'âge ?"]==curAges]
    ageDict[curAges].dropna(axis=1,inplace=True,how='all')
    renameCol(ageDict[curAges])
    ageDict[curAges].sort_index(axis=1, ascending=False,inplace=True)
    print(f"Il y a eu {len(ageDict[curAges])} réponses pour l'âge {curAges}")
    
ageDict = dict(sorted(ageDict.items()))

#Graph    
for stat in statNames:
    for k in ageDict.keys():
        ageDict[k].groupby(by=stat).count().plot(kind='pie',y='count',figsize=(5,5),title=f"{stat} pour un(e) {k} -> {len(ageDict[k])} réponses",autopct='%1.1f%%',legend=False)
Il y a eu 9 réponses pour l'âge 15-17 ans
Il y a eu 52 réponses pour l'âge 18-24 ans
Il y a eu 15 réponses pour l'âge 55 ans et plus
Il y a eu 23 réponses pour l'âge 45-55 ans
Il y a eu 19 réponses pour l'âge 25-34 ans
Il y a eu 11 réponses pour l'âge 35-44 ans
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [45]:
"""
colFilter = ["Quelle est votre tranche d'âge ?",'Montant_Abonnement']
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf["count"].to_frame()

colFilter = ["Quelle est votre tranche d'âge ?",'Montant_Achat']
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf["count"].to_frame()

colFilter = ["Quelle est votre tranche d'âge ?","Qui serait votre principale influence à l'utilisation d'un appareil de suivi des performances ?"]
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf = tempDf[tempDf["count"]>1]
tempDf["count"].to_frame()

colFilter = ["Quelle est votre tranche d'âge ?","Préfèreriez-vous avoir votre propre appareil, ou bien utiliser un appareil présent directement à l'endroit où vous pratiquer votre sport ?"]
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf["count"].to_frame()

colFilter = ["Quelle est votre tranche d'âge ?","Est-ce que l'achat d'un appareil reconditionné / d'occasion, et donc moins cher, vous intéresserait ?"]
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf["count"].to_frame()

colFilter = ["Quelle est votre tranche d'âge ?","Complexe_Simple"]
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf["count"].to_frame()

colFilter = ["Quelle est votre tranche d'âge ?","Achat_Loc"]
tempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])
tempDf["count"].to_frame()
"""
Out[45]:
'\ncolFilter = ["Quelle est votre tranche d\'âge ?",\'Montant_Abonnement\']\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf["count"].to_frame()\n\ncolFilter = ["Quelle est votre tranche d\'âge ?",\'Montant_Achat\']\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf["count"].to_frame()\n\ncolFilter = ["Quelle est votre tranche d\'âge ?","Qui serait votre principale influence à l\'utilisation d\'un appareil de suivi des performances ?"]\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf = tempDf[tempDf["count"]>1]\ntempDf["count"].to_frame()\n\ncolFilter = ["Quelle est votre tranche d\'âge ?","Préfèreriez-vous avoir votre propre appareil, ou bien utiliser un appareil présent directement à l\'endroit où vous pratiquer votre sport ?"]\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf["count"].to_frame()\n\ncolFilter = ["Quelle est votre tranche d\'âge ?","Est-ce que l\'achat d\'un appareil reconditionné / d\'occasion, et donc moins cher, vous intéresserait ?"]\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf["count"].to_frame()\n\ncolFilter = ["Quelle est votre tranche d\'âge ?","Complexe_Simple"]\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf["count"].to_frame()\n\ncolFilter = ["Quelle est votre tranche d\'âge ?","Achat_Loc"]\ntempDf=result.groupby(colFilter).count().sort_values(by=colFilter,ascending=[True,True])\ntempDf["count"].to_frame()\n'

Analyse par genre¶

In [46]:
genres = {}
for i in range (len(result)):
    tempGenre = result["Quel est votre genre ?"].iloc[i]
    if(tempGenre not in genres):
        genres[tempGenre] = 1
    else:
        genres[tempGenre]+=1

genreDict ={}
for curgenres in genres.keys():
    genreDict[curgenres] = result[result["Quel est votre genre ?"]==curgenres]
    genreDict[curgenres].dropna(axis=1,inplace=True,how='all')
    renameCol(genreDict[curgenres])
    genreDict[curgenres].sort_index(axis=1, ascending=False,inplace=True)
    print(f"Il y a eu {len(genreDict[curgenres])} réponses pour le genre {curgenres}")
    
genreDict = dict(sorted(genreDict.items()))
        
delList=[]
minNb = 10
for k in genreDict.keys():
    if(len(genreDict[k])<=minNb):delList.append(k)
      
print("Suppression des données de moins de",minNb)
for i in delList:
    print("Suppression de :",i)
    del genreDict[i]
    
#Graph    
for stat in statNames:
    for k in genreDict.keys():
        genreDict[k].groupby(by=stat).count().sort_values(by='count',ascending=False).plot(kind='pie',y='count',figsize=(5,5),title=f"{stat} pour un(e) {k} -> {len(genreDict[k])} réponses",autopct='%1.1f%%',legend=False)
Il y a eu 66 réponses pour le genre Homme
Il y a eu 60 réponses pour le genre Femme
Il y a eu 3 réponses pour le genre Je ne souhaite pas le préciser
Suppression des données de moins de 10
Suppression de : Je ne souhaite pas le préciser
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Analyse par lieu¶

In [47]:
lieux = {}
for i in range (len(result)):
    tempLieu = result["Quelle est votre principale région de résidence ?"].iloc[i]
    if(tempLieu not in lieux):
        lieux[tempLieu] = 1
    else:
        lieux[tempLieu]+=1

lieuDict ={}
for curLieu in lieux.keys():
    lieuDict[curLieu] = result[result["Quelle est votre principale région de résidence ?"]==curLieu]
    lieuDict[curLieu].dropna(axis=1,inplace=True,how='all')
    renameCol(lieuDict[curLieu])
    lieuDict[curLieu].sort_index(axis=1, ascending=False,inplace=True)
    print(f"Il y a eu {len(lieuDict[curLieu])} réponses pour le lieu {curLieu}")
    
lieuDict = dict(sorted(lieuDict.items()))

delList=[]
minNb = 6
for k in lieuDict.keys():
    if(len(lieuDict[k])<=minNb):delList.append(k)
      
print("Suppression des données de moins de",minNb)
for i in delList:
    #print("Suppression de :",i)
    del lieuDict[i]
    
#Graph
for stat in statNames:
    for k in lieuDict.keys():
        lieuDict[k].groupby(by=stat).count().plot(kind='pie',y='count',figsize=(5,5),title=f"{stat} pour un(e) {k} -> {len(lieuDict[k])} réponses",autopct='%1.1f%%',legend=False)
Il y a eu 67 réponses pour le lieu Île-de-France
Il y a eu 1 réponses pour le lieu Normandie
Il y a eu 1 réponses pour le lieu Uae
Il y a eu 3 réponses pour le lieu Suisse
Il y a eu 7 réponses pour le lieu Auvergne Rhône-Alpes
Il y a eu 9 réponses pour le lieu Liban
Il y a eu 9 réponses pour le lieu Occitanie
Il y a eu 5 réponses pour le lieu Bretagne
Il y a eu 5 réponses pour le lieu Provence-Alpes Côte d'Azur
Il y a eu 4 réponses pour le lieu Hauts-de-France
Il y a eu 8 réponses pour le lieu Bourgogne Franche-Comté
Il y a eu 1 réponses pour le lieu Other country
Il y a eu 2 réponses pour le lieu Kuwait
Il y a eu 3 réponses pour le lieu Nouvelle-Aquitaine
Il y a eu 1 réponses pour le lieu Pays de la Loire
Il y a eu 1 réponses pour le lieu Centre-Val de Loire
Il y a eu 1 réponses pour le lieu Paris
Il y a eu 1 réponses pour le lieu Tunisie 
Suppression des données de moins de 6
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Analyse par catégorie socio-professionnelle ?¶

In [48]:
cats = {}
for i in range (len(result)):
    tempCat = result["Quelle est votre catégorie socio-professionnelle ?"].iloc[i]
    if(tempCat not in cats):
        cats[tempCat] = 1
    else:
        cats[tempCat]+=1

catDict ={}
for curCat in cats.keys():
    catDict[curCat] = result[result["Quelle est votre catégorie socio-professionnelle ?"]==curCat]
    catDict[curCat].dropna(axis=1,inplace=True,how='all')
    renameCol(catDict[curCat])
    catDict[curCat].sort_index(axis=1, ascending=False,inplace=True)
    print(f"Il y a eu {len(catDict[curCat])} réponses pour le lieu {curCat}")
    
catDict = dict(sorted(catDict.items()))

delList=[]
minNb = 5
for k in catDict.keys():
    if(len(catDict[k])<=minNb):delList.append(k)
      
print("Suppression des données de moins de",minNb)
for i in delList:
    #print("Suppression de :",i)
    del catDict[i]
    
#Graph
for stat in statNames:
    for k in catDict.keys():
        catDict[k].groupby(by=stat).count().plot(kind='pie',y='count',figsize=(5,5),title=f"{stat} pour un(e) {k} -> {len(catDict[k])} réponses",autopct='%1.1f%%',legend=False)
Il y a eu 48 réponses pour le lieu Etudiant
Il y a eu 8 réponses pour le lieu Retraité
Il y a eu 24 réponses pour le lieu Employé
Il y a eu 8 réponses pour le lieu Enseignant
Il y a eu 26 réponses pour le lieu Cadre
Il y a eu 2 réponses pour le lieu Militaire
Il y a eu 2 réponses pour le lieu Parent au foyer
Il y a eu 3 réponses pour le lieu Demandeur d'emploi
Il y a eu 2 réponses pour le lieu Artisan / Commerçant
Il y a eu 1 réponses pour le lieu Saisonnier
Il y a eu 2 réponses pour le lieu Profession intérimaire
Il y a eu 1 réponses pour le lieu Architecte d'interieur
Il y a eu 1 réponses pour le lieu Agriculteur
Il y a eu 1 réponses pour le lieu Chef d'entreprise
Suppression des données de moins de 5
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Analyse par fréquence¶

In [49]:
freq = {}
for i in range (len(result)):
    tempCat = result["À quelle fréquence pratiquez-vous une activité sportive ?"].iloc[i]
    if(tempCat not in freq):
        freq[tempCat] = 1
    else:
        freq[tempCat]+=1

freqDict ={}
for curFreq in freq.keys():
    freqDict[curFreq] = result[result["À quelle fréquence pratiquez-vous une activité sportive ?"]==curFreq]
    freqDict[curFreq].dropna(axis=1,inplace=True,how='all')
    renameCol(freqDict[curFreq])
    freqDict[curFreq].sort_index(axis=1, ascending=False,inplace=True)
    print(f"Il y a eu {len(freqDict[curFreq])} réponses pour le lieu {curFreq}")
    
freqDict = dict(sorted(freqDict.items()))

delList=[]
minNb = 5
for k in freqDict.keys():
    if(len(freqDict[k])<=minNb):delList.append(k)
      
print("Suppression des données de moins de",minNb)
for i in delList:
    #print("Suppression de :",i)
    del freqDict[i]
    
#Graph
for stat in statNames:
    for k in freqDict.keys():
        freqDict[k].groupby(by=stat).count().plot(kind='pie',y='count',figsize=(5,5),title=f"{stat} pour un(e) {k} -> {len(freqDict[k])} réponses",autopct='%1.1f%%',legend=False)
Il y a eu 78 réponses pour le lieu Régulièrement chaque semaine
Il y a eu 22 réponses pour le lieu Régulièrement chaque mois
Il y a eu 16 réponses pour le lieu Occasionnellement
Il y a eu 13 réponses pour le lieu Plutôt rarement
Suppression des données de moins de 5
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

HeatMap¶

In [50]:
def renameColHeat(df):
    cols = {}
    for i in df.columns:
        if('fréquence' in i):
            cols[i]='Fréquence'
        elif ("influence" in i):
            cols[i]='Influence'
        elif ("âge" in i):
            cols[i]='Age'
        elif ("résidence" in i):
            cols[i]='Lieu'
        elif ("catégorie" in i):
            cols[i]='Catégorie'
        elif ("sport principal" in i):
            cols[i]='Sport Principal'
        elif ("secteur" in i):
            cols[i]='Secteur'
        elif ("genre" in i):
            cols[i]='Genre'
        elif ("propre appareil" in i):
            cols[i]='Possession'
        elif ("compétition" in i):
            cols[i]='Compétition'
        elif ("club sportif" in i):
            cols[i]='Club'
        elif ("utilisez-vous un appareil" in i):
            cols[i]='Utilisation'
        elif ("appareil reconditionné" in i):
            cols[i]='Reconditionné'
    df.rename(columns=cols,inplace=True) 
    return df
In [51]:
heatMapColDrop = ["count","Si non pour quelles raisons ?","Raisons","Si oui quel(s) appareil(s) utilisez-vous ?","Appareils_Utiles"]
resultHeatMap = result.drop(heatMapColDrop,axis=1)
resultHeatMap = renameColHeat(resultHeatMap)
resultHeatMap['Achat_Loc'] = resultHeatMap['Achat_Loc'].map(nanAchat_Loc)
resultHeatMap
Out[51]:
Fréquence Influence Age Lieu Catégorie Sport Principal Secteur Genre Possession Compétition ... Obstacle_Prix Obstacle_Mauv_Utilisation Obstacle_Inutile Obstacle_Inconfort Montant_Achat Montant_Abonnement Utilisation Reconditionné Complexe_Simple Achat_Loc
0 Régulièrement chaque semaine Mon entraineur m'en a conseillé un 15-17 ans Île-de-France Etudiant Hockey Education Homme Mon propre appareil Oui ... 5.0 3.0 2.0 2.0 0-24 euros 0-4,99 euros Non Peut-être, cela dépend de l'état du produit Complet mais complexe Achat
1 Régulièrement chaque semaine Mon entraineur m'en a conseillé un 18-24 ans Île-de-France Etudiant Raquettes Informatique / Télécom Homme Mon propre appareil Non ... 5.0 2.0 2.0 4.0 25-49 euros 0-4,99 euros Non Peut-être, cela dépend de l'état du produit Complet mais complexe Achat
6 Régulièrement chaque mois Des sportifs professionnels que j'apprécie l'u... 18-24 ans Île-de-France Etudiant Raquettes Industrie Homme Mon propre appareil Non ... 5.0 1.0 1.0 1.0 50-99 euros 0-4,99 euros Non Oui, s'il fonctionne c'est le principal Complet mais complexe Achat
27 Régulièrement chaque semaine Des amis l'utilisent 18-24 ans Normandie Etudiant Raquettes Agroalimentaire Homme Mon propre appareil Non ... 5.0 2.0 3.0 2.0 50-99 euros 0-4,99 euros Oui Oui, s'il fonctionne c'est le principal Simplifié mais compréhensible Achat
29 Occasionnellement Mon médecin m'en a conseillé un 18-24 ans Île-de-France Etudiant Raquettes Communication / Marketing Femme Mon propre appareil Non ... 4.0 3.0 3.0 2.0 50-99 euros 0-4,99 euros Non Oui, s'il fonctionne c'est le principal Simplifié mais compréhensible Achat
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
109 Régulièrement chaque mois Des sportifs professionnels que j'apprécie l'u... 18-24 ans Île-de-France Cadre Golf Energie Homme Mon propre appareil Non ... 2.0 3.0 2.0 2.0 50-99 euros 5-9,99 euros Non Oui, s'il fonctionne c'est le principal Complet mais complexe Achat
111 Régulièrement chaque mois Des sportifs professionnels que j'apprécie l'u... 35-44 ans Hauts-de-France Chef d'entreprise Golf Droit Femme Un appareil présent sur place Non ... 4.0 2.0 4.0 3.0 50-99 euros 10-14,99euros Non Oui, s'il fonctionne c'est le principal Complet mais complexe Achat
112 Occasionnellement Mon médecin m'en a conseillé un 25-34 ans Bretagne Employé Equestres Ressources humaines Femme Mon propre appareil Non ... 4.0 5.0 2.0 2.0 50-99 euros 10-14,99euros Non Peut-être, cela dépend de l'état du produit Complet mais complexe Achat
124 Régulièrement chaque mois Des amis l'utilisent 15-17 ans Île-de-France Etudiant Equestres Physique / Mécanique Femme Mon propre appareil Non ... 4.0 3.0 4.0 3.0 25-49 euros 5-9,99 euros Non Oui, s'il fonctionne c'est le principal Complet mais complexe Achat
125 Régulièrement chaque semaine Des fédérations sportives professionnelles / c... 15-17 ans Île-de-France Etudiant Equestres Transport Homme Un appareil présent sur place Oui ... 5.0 2.0 2.0 3.0 0-24 euros 5-9,99 euros Non Oui, s'il fonctionne c'est le principal Complet mais complexe Location

129 rows × 23 columns

In [52]:
def classToInt(x):
    return x

for col in resultHeatMap.columns:
    tempDict = {}
    count=0
    for i in range (len(resultHeatMap)):
        cur = resultHeatMap[col].iloc[i]
        if cur in tempDict.keys():
            resultHeatMap[col].iloc[i] = tempDict[cur]
        else:
            tempDict[cur] = count
            count+=1
            resultHeatMap[col].iloc[i] = tempDict[cur]
resultHeatMap
Out[52]:
Fréquence Influence Age Lieu Catégorie Sport Principal Secteur Genre Possession Compétition ... Obstacle_Prix Obstacle_Mauv_Utilisation Obstacle_Inutile Obstacle_Inconfort Montant_Achat Montant_Abonnement Utilisation Reconditionné Complexe_Simple Achat_Loc
0 0 0 0 0 0 0 0 0 0 0 ... 0.0 0.0 0.0 0.0 0 0 0 0 0 0
1 0 0 1 0 0 1 1 0 0 1 ... 0.0 1.0 0.0 1.0 1 0 0 0 0 0
6 1 1 1 0 0 1 2 0 0 1 ... 0.0 2.0 1.0 2.0 2 0 0 1 0 0
27 0 2 1 1 0 1 3 0 0 1 ... 0.0 1.0 2.0 0.0 2 0 1 1 1 0
29 2 3 1 0 0 1 4 1 0 1 ... 1.0 0.0 2.0 0.0 2 0 0 1 1 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
109 1 1 1 0 4 13 6 0 0 1 ... 3.0 0.0 0.0 0.0 2 2 0 1 0 0
111 1 1 5 9 13 13 13 1 1 1 ... 1.0 1.0 3.0 3.0 2 3 0 1 0 0
112 2 3 4 7 2 14 19 1 0 1 ... 1.0 4.0 0.0 0.0 2 3 0 0 0 0
124 1 2 0 0 0 14 9 1 0 1 ... 1.0 0.0 3.0 3.0 1 2 0 1 0 0
125 0 13 0 0 0 14 5 0 1 0 ... 0.0 1.0 0.0 3.0 0 2 0 1 0 1

129 rows × 23 columns

In [53]:
cor=resultHeatMap.corr("pearson") #Correlation of the variables between them
cor
Out[53]:
Fréquence Influence Age Lieu Catégorie Sport Principal Secteur Genre Possession Compétition ... Obstacle_Prix Obstacle_Mauv_Utilisation Obstacle_Inutile Obstacle_Inconfort Montant_Achat Montant_Abonnement Utilisation Reconditionné Complexe_Simple Achat_Loc
Fréquence 1.000000 -0.101220 0.177353 0.084492 0.052230 0.099060 -0.080584 0.186121 0.188177 0.221064 ... 0.160367 0.018642 -0.126458 -0.081198 -0.075794 0.066913 -0.218548 0.003444 0.051237 0.105908
Influence -0.101220 1.000000 0.184054 0.121942 0.143438 0.072427 -0.046455 -0.014121 -0.076634 0.002186 ... 0.109344 -0.081297 0.022999 0.133343 0.027543 -0.024362 0.318336 0.269985 -0.076842 -0.043319
Age 0.177353 0.184054 1.000000 0.216223 0.552841 0.245979 0.165295 0.084058 0.115087 0.259480 ... 0.094853 0.099558 0.082517 0.070576 0.204884 0.011601 0.141833 0.089074 -0.031354 -0.033551
Lieu 0.084492 0.121942 0.216223 1.000000 0.231103 0.174508 0.143829 0.055972 -0.020923 0.038549 ... 0.128162 -0.026976 0.026113 0.080605 0.059751 0.121263 0.055037 0.045345 -0.026855 0.028638
Catégorie 0.052230 0.143438 0.552841 0.231103 1.000000 0.237357 0.229350 0.054140 0.179545 0.155691 ... 0.097933 0.060585 0.120353 0.085762 0.022236 0.111009 -0.036128 0.088486 -0.122479 0.045253
Sport Principal 0.099060 0.072427 0.245979 0.174508 0.237357 1.000000 0.179666 0.022005 0.204276 0.043578 ... 0.202928 -0.085957 0.019184 0.031861 -0.052430 0.295270 -0.086180 0.051545 -0.149784 0.141929
Secteur -0.080584 -0.046455 0.165295 0.143829 0.229350 0.179666 1.000000 0.029989 0.085630 -0.011086 ... -0.000028 0.009675 0.030752 0.086446 0.232580 0.224299 0.099395 0.051635 -0.011673 0.161096
Genre 0.186121 -0.014121 0.084058 0.055972 0.054140 0.022005 0.029989 1.000000 0.099562 0.188209 ... 0.019335 -0.066433 0.023608 -0.066719 -0.213364 -0.005724 -0.105475 0.121089 0.246594 -0.029370
Possession 0.188177 -0.076634 0.115087 -0.020923 0.179545 0.204276 0.085630 0.099562 1.000000 -0.057741 ... -0.021555 -0.088292 0.012010 0.094681 -0.271225 0.075341 -0.259936 -0.052573 0.011096 0.343765
Compétition 0.221064 0.002186 0.259480 0.038549 0.155691 0.043578 -0.011086 0.188209 -0.057741 1.000000 ... 0.015306 0.001252 0.135811 -0.059819 -0.115697 -0.093092 -0.209178 0.075553 0.258325 -0.089900
Club 0.417611 -0.190444 0.115833 0.061499 0.060621 0.127737 0.019254 0.177019 0.075330 0.326700 ... 0.015489 -0.032365 -0.075819 -0.010268 0.006684 -0.011419 -0.097132 -0.032342 0.067818 -0.000722
Obstacle_Visuel -0.083104 -0.109921 -0.169994 -0.033345 -0.101597 -0.017619 0.052077 0.067751 0.063463 -0.103937 ... 0.102119 0.101610 0.099084 0.101463 0.001656 0.131283 0.017928 -0.032803 0.134085 -0.021334
Obstacle_Qualite -0.040325 -0.028164 0.107628 0.003747 0.171462 0.009984 0.048888 0.062096 -0.113743 0.161755 ... -0.031886 0.294914 0.166488 0.044744 -0.106050 -0.022620 0.095179 -0.068635 0.111347 -0.063098
Obstacle_Prix 0.160367 0.109344 0.094853 0.128162 0.097933 0.202928 -0.000028 0.019335 -0.021555 0.015306 ... 1.000000 -0.148111 -0.143269 -0.145102 0.223884 0.277768 0.149062 0.149083 -0.056940 0.046029
Obstacle_Mauv_Utilisation 0.018642 -0.081297 0.099558 -0.026976 0.060585 -0.085957 0.009675 -0.066433 -0.088292 0.001252 ... -0.148111 1.000000 0.299003 0.191744 -0.042738 -0.056276 -0.110089 0.093740 0.043968 -0.049600
Obstacle_Inutile -0.126458 0.022999 0.082517 0.026113 0.120353 0.019184 0.030752 0.023608 0.012010 0.135811 ... -0.143269 0.299003 1.000000 0.221418 -0.010366 0.056437 -0.154630 0.060930 0.062471 0.040043
Obstacle_Inconfort -0.081198 0.133343 0.070576 0.080605 0.085762 0.031861 0.086446 -0.066719 0.094681 -0.059819 ... -0.145102 0.191744 0.221418 1.000000 -0.021136 -0.080819 -0.003675 -0.008969 -0.096725 0.084076
Montant_Achat -0.075794 0.027543 0.204884 0.059751 0.022236 -0.052430 0.232580 -0.213364 -0.271225 -0.115697 ... 0.223884 -0.042738 -0.010366 -0.021136 1.000000 0.261978 0.416346 0.022950 -0.221303 -0.074110
Montant_Abonnement 0.066913 -0.024362 0.011601 0.121263 0.111009 0.295270 0.224299 -0.005724 0.075341 -0.093092 ... 0.277768 -0.056276 0.056437 -0.080819 0.261978 1.000000 0.141215 -0.016668 -0.181645 0.273706
Utilisation -0.218548 0.318336 0.141833 0.055037 -0.036128 -0.086180 0.099395 -0.105475 -0.259936 -0.209178 ... 0.149062 -0.110089 -0.154630 -0.003675 0.416346 0.141215 1.000000 -0.113480 -0.060444 -0.231964
Reconditionné 0.003444 0.269985 0.089074 0.045345 0.088486 0.051545 0.051635 0.121089 -0.052573 0.075553 ... 0.149083 0.093740 0.060930 -0.008969 0.022950 -0.016668 -0.113480 1.000000 0.051695 0.089603
Complexe_Simple 0.051237 -0.076842 -0.031354 -0.026855 -0.122479 -0.149784 -0.011673 0.246594 0.011096 0.258325 ... -0.056940 0.043968 0.062471 -0.096725 -0.221303 -0.181645 -0.060444 0.051695 1.000000 -0.092838
Achat_Loc 0.105908 -0.043319 -0.033551 0.028638 0.045253 0.141929 0.161096 -0.029370 0.343765 -0.089900 ... 0.046029 -0.049600 0.040043 0.084076 -0.074110 0.273706 -0.231964 0.089603 -0.092838 1.000000

23 rows × 23 columns

In [54]:
c = resultHeatMap.corr("pearson").abs()
s = c.unstack()
so = s.sort_values(kind="quicksort")
so = so[so!=1]
so.tail(16)
Out[54]:
Montant_Abonnement         Sport Principal              0.295270
Sport Principal            Montant_Abonnement           0.295270
Obstacle_Mauv_Utilisation  Obstacle_Inutile             0.299003
Obstacle_Inutile           Obstacle_Mauv_Utilisation    0.299003
Influence                  Utilisation                  0.318336
Utilisation                Influence                    0.318336
Club                       Compétition                  0.326700
Compétition                Club                         0.326700
Achat_Loc                  Possession                   0.343765
Possession                 Achat_Loc                    0.343765
Montant_Achat              Utilisation                  0.416346
Utilisation                Montant_Achat                0.416346
Fréquence                  Club                         0.417611
Club                       Fréquence                    0.417611
Catégorie                  Age                          0.552841
Age                        Catégorie                    0.552841
dtype: float64
In [55]:
import numpy as np 
from pandas import DataFrame
import seaborn as sns
%matplotlib inline

fig, ax = plt.subplots(figsize=(20,15))   
sns.heatmap(cor, annot=True,ax=ax,cmap='Blues')
Out[55]:
<AxesSubplot:>
No description has been provided for this image